home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / samples / Multimedia / DirectShow_WinXP / VMR / Renderless / vcdplyer.h < prev   
C/C++ Source or Header  |  2001-10-08  |  4KB  |  127 lines

  1. //------------------------------------------------------------------------------
  2. // File: vcdplyer.h
  3. //
  4. // Desc: DirectShow sample code - header file for CMpegMovie class
  5. //
  6. // Copyright (c) 1994 - 2001, Microsoft Corporation.  All rights reserved.
  7. //------------------------------------------------------------------------------
  8.  
  9. #include <ddraw.h>
  10. #define D3D_OVERLOADS
  11. #include <d3d.h>
  12.  
  13. /* -------------------------------------------------------------------------
  14. ** CMpegMovie - an Mpeg movie playback class.
  15. ** -------------------------------------------------------------------------
  16. */
  17. enum EMpegMovieMode { MOVIE_NOTOPENED = 0x00,
  18.                       MOVIE_OPENED = 0x01,
  19.                       MOVIE_PLAYING = 0x02,
  20.                       MOVIE_STOPPED = 0x03,
  21.                       MOVIE_PAUSED = 0x04 };
  22.  
  23.  
  24.  
  25. BOOL VerifyVMR(void);
  26.  
  27. class CMpegMovie :
  28.     public CUnknown,
  29.     public IVMRSurfaceAllocator,
  30.     public IVMRImagePresenter,
  31.     public IVMRSurfaceAllocatorNotify
  32. {
  33.  
  34. private:
  35.     // Our state variable - records whether we are opened, playing etc.
  36.     EMpegMovieMode  m_Mode;
  37.     HANDLE          m_MediaEvent;
  38.     HWND            m_hwndApp;
  39.     BOOL            m_bFullScreen;
  40.     BOOL            m_bFullScreenPoss;
  41.     int             m_iDuration;
  42.     GUID            m_TimeFormat;
  43.  
  44.     LPDIRECTDRAWSURFACE7    m_pddsPrimary;
  45.     LPDIRECTDRAWSURFACE7    m_pddsPriText;
  46.     LPDIRECTDRAWSURFACE7    m_pddsRenderT;
  47.  
  48.     IFilterGraph*               m_Fg;
  49.     IGraphBuilder*              m_Gb;
  50.     IMediaControl*              m_Mc;
  51.     IMediaSeeking*              m_Ms;
  52.     IMediaEvent*                m_Me;
  53.  
  54.     IVMRSurfaceAllocator*       m_lpDefSA;
  55.     IVMRImagePresenter*         m_lpDefIP;
  56.     IVMRWindowlessControl*      m_lpDefWC;
  57.     IVMRSurfaceAllocatorNotify* m_lpDefSAN;
  58.  
  59.     HRESULT CreateDefaultAllocatorPresenter();
  60.     HRESULT AddVideoMixingRendererToFG();
  61.     HRESULT OnSetDDrawDevice(LPDIRECTDRAW7 pDD, HMONITOR hMon);
  62.  
  63.  
  64. public:
  65.      CMpegMovie(HWND hwndApplication);
  66.     ~CMpegMovie();
  67.  
  68.     DECLARE_IUNKNOWN
  69.     STDMETHODIMP NonDelegatingQueryInterface(REFIID, void**);
  70.  
  71.     // IVMRSurfaceAllocator
  72.     STDMETHODIMP AllocateSurface(DWORD_PTR dwUserID,
  73.                                 VMRALLOCATIONINFO* lpAllocInfo,
  74.                                  DWORD* lpdwActualBackBuffers,
  75.                                  LPDIRECTDRAWSURFACE7* lplpSurface);
  76.     STDMETHODIMP FreeSurface(DWORD_PTR dwUserID);
  77.     STDMETHODIMP PrepareSurface(DWORD_PTR dwUserID,
  78.                                 LPDIRECTDRAWSURFACE7 lplpSurface,
  79.                                 DWORD dwSurfaceFlags);
  80.     STDMETHODIMP AdviseNotify(IVMRSurfaceAllocatorNotify* lpIVMRSurfAllocNotify);
  81.  
  82.     // IVMRSurfaceAllocatorNotify
  83.     STDMETHODIMP AdviseSurfaceAllocator(DWORD_PTR dwUserID,
  84.                                         IVMRSurfaceAllocator* lpIVRMSurfaceAllocator);
  85.     STDMETHODIMP SetDDrawDevice(LPDIRECTDRAW7 lpDDrawDevice,HMONITOR hMonitor);
  86.     STDMETHODIMP ChangeDDrawDevice(LPDIRECTDRAW7 lpDDrawDevice,HMONITOR hMonitor);
  87.     STDMETHODIMP RestoreDDrawSurfaces();
  88.     STDMETHODIMP NotifyEvent(LONG EventCode, LONG_PTR lp1, LONG_PTR lp2);
  89.     STDMETHODIMP SetBorderColor(COLORREF clr);
  90.  
  91.     // IVMRImagePresenter
  92.     STDMETHODIMP StartPresenting(DWORD_PTR dwUserID);
  93.     STDMETHODIMP StopPresenting(DWORD_PTR dwUserID);
  94.     STDMETHODIMP PresentImage(DWORD_PTR dwUserID,
  95.                               VMRPRESENTATIONINFO* lpPresInfo);
  96.  
  97.     HRESULT         OpenMovie(TCHAR *lpFileName);
  98.     DWORD           CloseMovie();
  99.  
  100.     BOOL            PlayMovie();
  101.     BOOL            PauseMovie();
  102.     BOOL            StopMovie();
  103.  
  104.     OAFilterState   GetStateMovie();
  105.  
  106.     HANDLE          GetMovieEventHandle();
  107.     long            GetMovieEventCode();
  108.  
  109.     BOOL            PutMoviePosition(LONG x, LONG y, LONG cx, LONG cy);
  110.  
  111.     REFTIME         GetDuration();
  112.     REFTIME         GetCurrentPosition();
  113.     BOOL            SeekToPosition(REFTIME rt,BOOL bFlushData);
  114.  
  115.     BOOL            RepaintVideo(HWND hwnd, HDC hdc);
  116.  
  117.     void            SetFullScreenMode(BOOL bMode);
  118.     BOOL            IsFullScreenMode();
  119.  
  120.     void            DisplayModeChanged() {
  121.         if (m_lpDefWC) {
  122.             m_lpDefWC->DisplayModeChanged();
  123.         }
  124.     }
  125.  
  126. };
  127.